package JComBoxDemo;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class MainClass {
	  public static void main(String args[]) throws Exception {
	    Color colors[] = { Color.GREEN, Color.ORANGE, Color.PINK, Color.RED,
	        Color.WHITE, Color.YELLOW };
	    JFrame frame = new JFrame("Color JComboBox");
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	    final JComboBox comboBox = new JComboBox(colors);
	    comboBox.setMaximumRowCount(5);
	    comboBox.setEditable(true);
	    comboBox.setRenderer(new ColorCellRenderer());
	    frame.add(comboBox, BorderLayout.NORTH);

	    final JLabel label = new JLabel();
	    label.setOpaque(true);
	    label.setBackground((Color) comboBox.getSelectedItem());
	    frame.add(label, BorderLayout.CENTER);

	    ActionListener actionListener = new ActionListener() {
	      public void actionPerformed(ActionEvent actionEvent) {
	        Color selectedColor = (Color) comboBox.getSelectedItem();
	        label.setBackground(selectedColor);
	      }
	    };
	    comboBox.addActionListener(actionListener);

	    frame.setSize(300, 200);
	    frame.setVisible(true);
	  }

	}
	class ColorCellRenderer implements ListCellRenderer {
	  protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
	  //private final static Dimension preferredSize = new Dimension(0, 50);
	  private final static  Dimension preferredSize = new Dimension(100, 50);
	  public Component getListCellRendererComponent(JList list, Object value, int index,
	      boolean isSelected, boolean cellHasFocus) {
	    JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,
	        isSelected, cellHasFocus);
	    if (value instanceof Color) {
	      renderer.setBackground((Color) value);
	    }
	    renderer.setPreferredSize(preferredSize);
	    return renderer;
	  }
	}

	
	class SelectCellRenderer implements ListCellRenderer{
		 protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
		  //private final static Dimension preferredSize = new Dimension(0, 50);
		  private final static  Dimension preferredSize = new Dimension(100, 50);
		@Override
		public Component getListCellRendererComponent(JList list, Object value,
				int index, boolean isSelected, boolean cellHasFocus) {
			Component component = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
            Dimension size = component.getPreferredSize();
           // if (index == 0) {
               // component.setBackground(Color.red);
                if (component instanceof JLabel) {
                    ((JLabel) component).setHorizontalTextPosition(JLabel.CENTER);
                }
         //   }
                component.setPreferredSize(preferredSize);
            return component;
		}
		
	}